希望將散亂的顏色順序排列好,這裡用 0 代表紅色, 1 代表白色, 2表示藍色,不希望使用 sort 方法排序
input = [2,0,2,1,1,0]
output= [0,0,1,1,2,2]
準備 r w b 三種變數記錄顏色出現次數
用迴圈加上 if 判斷顏色出現幾次
最後先判斷是否出現過這個顏色,如果有在把它出現幾次與對應數字添加進結果中
input=[2,0,2,1,1,0]
output= [0,0,1,1,2,2]
function arrangeColor(ary){
r = 0 // 0 => red
w = 0 // 1 => white
b = 0 // 2 => blue
result = []
ary.forEach( color => {
if(color == 0){
r += 1
}else if(color == 1){
w += 1
}else{
b += 1
}
})
if( r != 0 ){
result = result.concat(Array(r).fill(0))
}
if( w != 0 ){
result = result.concat(Array(w).fill(1))
}
if( b != 0 ){
result = result.concat(Array(b).fill(2))
}
console.log(result)
return result
}
function expect(a,b){
console.log(JSON.stringify(a)==JSON.stringify(b))
}
expect(arrangeColor(input),output)
原先的想法是去做迴圈,出現紅色就塞到 result 前面 (unshift),出現藍色就塞到後面 (pop),但是白色要怎麼塞就需要去計算有幾個紅色,要插入到 result 的第幾個位置,後來想想,我可以依照 output 要求的順序,判斷是否有出現該顏色,就塞幾個,依照顏色順序塞下去,就不用考慮插入顏色的問題
今天到此為止,有任何問題請在下方留言或透過email、GitHub聯絡我,感謝閱讀
Daily kitty